/*
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * This code was generated by https://code.google.com/p/google-apis-client-generator/
 * (build: 2014-06-09 16:41:44 UTC)
 * on 2014-06-19 at 21:37:58 UTC 
 * Modify at your own risk.
 */

package net.toby200.canalstoppages.stoppages.model;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * Model definition for Notice.
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the stoppages. For a detailed explanation see:
 * <a href="http://code.google.com/p/google-http-java-client/wiki/JSON">http://code.google.com/p/google-http-java-client/wiki/JSON</a>
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class Notice extends com.google.api.client.json.GenericJson implements Parcelable {

    /**
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private long id;


    /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String description;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private Location endLoc;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String fromDate;

    /**
     * The value may be {@code null}.
     */
    @com.google.api.client.util.Key
    private long lastUpdated;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String locationDetail;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private Location startLoc;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String title;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String toDate;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String type;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String waterway;

    public long getId() { return id; }

    public Notice setId(long id) {
        this.id = id;
        return this;
    }

  /**
   * @return value or {@code null} for none
   */
  public String getDescription() {
    return description;
  }

  /**
   * @param description description or {@code null} for none
   */
  public Notice setDescription(String description) {
    this.description = description;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public Location getEndLoc() {
    return endLoc;
  }

  /**
   * @param endLoc endLoc or {@code null} for none
   */
  public Notice setEndLoc(Location endLoc) {
    this.endLoc = endLoc;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public String getFromDate() {
    return fromDate;
  }

  /**
   * @param fromDate fromDate or {@code null} for none
   */
  public Notice setFromDate(String fromDate) {
    this.fromDate = fromDate;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public String getLocationDetail() {
    return locationDetail;
  }

  /**
   * @param locationDetail locationDetail or {@code null} for none
   */
  public Notice setLocationDetail(String locationDetail) {
    this.locationDetail = locationDetail;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public Location getStartLoc() {
    return startLoc;
  }

  /**
   * @param startLoc startLoc or {@code null} for none
   */
  public Notice setStartLoc(Location startLoc) {
    this.startLoc = startLoc;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public String getTitle() {
    return title;
  }

  /**
   * @param title title or {@code null} for none
   */
  public Notice setTitle(String title) {
    this.title = title;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public String getToDate() {
    return toDate;
  }

  /**
   * @param toDate toDate or {@code null} for none
   */
  public Notice setToDate(String toDate) {
    this.toDate = toDate;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public String getType() {
    return type;
  }

  /**
   * @param type type or {@code null} for none
   */
  public Notice setType(String type) {
    this.type = type;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public String getWaterway() {
    return waterway;
  }

  /**
   * @param waterway waterway or {@code null} for none
   */
  public Notice setWaterway(String waterway) {
    this.waterway = waterway;
    return this;
  }

    /**
     * @return value or {@code null} for none
     */
    public long getLastUpdated() {
        return lastUpdated;
    }

    /**
     * @param lastUpdated lastUpdated or {@code null} for none
     */
    public Notice setLastUpdated(long lastUpdated) {
        this.lastUpdated = lastUpdated;
        return this;
    }

  @Override
  public Notice set(String fieldName, Object value) {
    return (Notice) super.set(fieldName, value);
  }

  @Override
  public Notice clone() {
    return (Notice) super.clone();
  }

    @Override
    public int describeContents() {
        return 0;
    }

    public Notice() {
    }

    public Notice(Parcel p) {
        id = p.readLong();
        title = p.readString();
        waterway = p.readString();
        type = p.readString();
        fromDate = p.readString();
        toDate = p.readString();
        locationDetail = p.readString();
        description = p.readString();
        startLoc = (Location) p.readParcelable(Location.class.getClassLoader());
        endLoc = (Location) p.readParcelable(Location.class.getClassLoader());
        lastUpdated = p.readLong();
    }



    @Override
    public void writeToParcel(Parcel p, int flags) {
        p.writeLong(id);
        p.writeString(title);
        p.writeString(waterway);
        p.writeString(type);
        p.writeString(fromDate);
        p.writeString(toDate);
        p.writeString(locationDetail);
        p.writeString(description);
        p.writeParcelable(startLoc, 0);
        p.writeParcelable(endLoc, 0);
        p.writeLong(lastUpdated);
    }

    public static final Parcelable.Creator<Notice> CREATOR = new Parcelable.Creator<Notice>() {

        @Override
        public Notice createFromParcel(Parcel source) {
            return new Notice(source);
        }

        @Override
        public Notice[] newArray(int size) {
            return new Notice[size];
        }
    };
}
